home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Netware Super Library
/
Netware Super Library.iso
/
pgm_tool
/
lu62
/
novell
/
pattach.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-07-03
|
2KB
|
76 lines
/*
* CopyRight 1995. Nicholas Poljakov all rights reserved.
*/
#include <dos.h>
#include <stdio.h>
#include <memory.h>
#include <nau.h>
extern struct nau naua[100];
union REGS inregs, outregs;
struct SREGS segregs;
struct crec { /* for IPX interface this structure is the same as
* for ASYNC driver, but fields after "asc_rcv_exit"
* my have another sense.
*/
void far *asc_rcv_exit;
short socket; /* my socket */
char LocalName[8]; /* Name of local LU */
} rec;
extern speed;
extern width;
extern parity;
extern n_port;
extern stop_num;
extern void DrEntry(void);
pattach(int n, char _far *pdata, int len)
{
int i;
char _far *p;
if ( n == 0) {
/* Open */
rec.asc_rcv_exit = DrEntry; /* Entry point for device
* driver.
*/
rec.socket = 0x4444;
memcpy(rec.LocalName, naua[0].name, 8);
p = &rec;
inregs.x.dx = FP_OFF( p );
segregs.ds = FP_SEG( p );
inregs.x.ax = 0;
}
else
if ( n == 1) {
/* Send */
p = pdata - 12; /* points to start of segment */
i = len + 28;
inregs.x.dx = FP_OFF( p );
segregs.ds = FP_SEG( p );
inregs.x.cx = i;
inregs.h.ah = 1;
inregs.h.al = 0;
}
else
if ( n == 2) {
/* close */
inregs.h.ah = 2;
inregs.h.al = 0;
}
else
if ( n == 3) {/* Detach_LU */
inregs.h.ah = 3;
inregs.h.al = 0;
}
else
return -1;
int86x( 0x6f, &inregs, &outregs, &segregs);
return 0;
}